home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / DETH_SRC.ZIP / SOUND.H < prev    next >
C/C++ Source or Header  |  1994-06-13  |  4KB  |  154 lines

  1.  
  2. /* Copyright 1993 by Peter Sprenger   Pete@amber.dinoco.de
  3.  *                   5014 Kerpen 3
  4.  *                   Germany
  5.  *
  6.  * Permission to use, copy, modify, and distribute this
  7.  * software and its documentation for any purpose and without
  8.  * fee is hereby granted, provided that the above copyright
  9.  * notice appear in all copies.  The author Peter Sprenger
  10.  * makes no representations about the suitability of this
  11.  * software for any purpose.  It is provided "as is" without
  12.  * express or implied warranty.
  13.  */
  14.  
  15.  
  16. #ifndef __SBP__
  17.  
  18. #define __SBP__
  19.  
  20. #define DSP_RESET 6
  21. #define DSP_READ 0xa
  22. #define DSP_WRITE 0xc
  23. #define DSP_WSTATUS 0xc
  24. #define DSP_RSTATUS 0xe
  25.  
  26. #define FM_DETECT 1
  27. #define DSP_DETECT 2
  28.  
  29. #define DSP_DMA_8BIT 0x14
  30. #define DSP_DMA_ADC 0x24
  31.  
  32. #define DSP_MIDI_WRITE 0x38
  33. #define DSP_MIDI_READI 0x31
  34. #define DSP_MIDI_UART 0x35
  35.  
  36. #define DSP_DMA_4BIT_REF 0x75
  37. #define DSP_DMA_4BIT 0x74
  38.  
  39. #define DSP_DMA_26BIT_REF 0x77
  40. #define DSP_DMA_26BIT 0x76
  41.  
  42. #define DSP_DMA_2BIT_REF 0x17
  43. #define DSP_DMA_2BIT 0x16
  44.  
  45. #define DSP_SAMPLE_RATE 0x40
  46. #define DSP_BLOCK_SIZE 0x48
  47.  
  48. #define DSP_SILENCE 0x80
  49.  
  50. #define DSP_DMA_HIGHSPEED 0x91
  51. #define DSP_DMA_ADC_HIGHSPEED 0x99
  52.  
  53. #define DSP_SPKR_ON 0xd1
  54. #define DSP_SPKR_OFF 0xd3
  55.  
  56. #define DSP_HALT_DMA 0xd0
  57. #define DSP_CONT_DMA 0xd4
  58.  
  59. #define DSP_GET_VERS 0xe1
  60.  
  61. #define DSP_INVOKE_INTR 0xf2
  62.  
  63. #define FM_BOTH_OFF  8
  64. #define FM_LEFT_OFF  0
  65. #define FM_RIGHT_OFF 2
  66.  
  67. #define MIX_ADR_OFF 4
  68. #define MIX_DATA_OFF 5
  69.  
  70. #define MIX_VOICE_VOL 4      /* Mixer register addresses */
  71. #define MIX_MICRO_VOL 0xa
  72. #define MIX_INPUT 0xc
  73. #define MIX_OUTPUT 0xe
  74. #define MIX_MASTER_VOL 0x22
  75. #define MIX_FM_VOL 0x26
  76. #define MIX_CD_VOL 0x28
  77. #define MIX_LINE_IN_VOL 0x2e
  78.  
  79. #define MIX_IN_MICRO 0       /* Input register settings */
  80. #define MIX_IN_CD 2
  81. #define MIX_IN_MICRO2 4
  82. #define MIX_IN_LINE 6
  83. #define MIX_LOW_FILT 0
  84. #define MIX_HIGH_FILT 8
  85. #define MIX_NO_FILT 0x20
  86.  
  87. #define MIX_BYPASS_OUT_FILT 0x20   /* Output register settings */
  88. #define MIX_STEREO 2
  89. #define MIX_MONO 0
  90.  
  91. #define FM_HIHAT     1
  92. #define FM_TOPCYM    2
  93. #define FM_TOMTOM    4
  94. #define FM_SNARE     8
  95. #define FM_BASS   0x10
  96.  
  97. typedef enum {bit8=0,bit4=1,bit26=2,bit2=3,high} playmode;
  98. typedef enum {none,nodsp,adlib,sb20,sbpro} cardtype;
  99. typedef enum {both,left,right} fm_chan;
  100. typedef enum {midi,sample} vect;
  101.  
  102. void FM_Write(WORD data);
  103. void FM_Reset();
  104. BYTE FM_Status();
  105. void FM_SetChan(fm_chan channel);
  106. void FM_SetVoice(BYTE voice,BYTE *ins);
  107. void FM_SetNote(BYTE voice,BYTE note);
  108. void FM_KeyOn(BYTE voice);
  109. void FM_KeyOff(BYTE voice);
  110. void FM_SetVol(BYTE voice,BYTE vol);
  111. void FM_RythmMode(BYTE bool);
  112. void FM_RythmOn(BYTE inst);
  113. void FM_RythmOff(BYTE inst);
  114.  
  115. void MIX_Reset();
  116. void MIX_SetInput(BYTE opt);
  117. void MIX_SetOutput(BYTE opt);
  118. void MIX_SetVolume(BYTE reg,BYTE left,BYTE right);
  119. void MIX_GetVolume(BYTE reg,BYTE *left,BYTE *right);
  120.  
  121. void MIDI_Write(BYTE data);
  122. void MIDI_WriteBuf(BYTE *data,int length);
  123. WORD  MIDI_ByteAvail();
  124. BYTE MIDI_GetByte();
  125. void MIDI_ReadBuf(WORD count,BYTE *buffer);
  126. int MIDI_Init(BYTE mode,WORD buflen);
  127. void MIDI_Remove();
  128.  
  129. int DSP_Reset();
  130. BYTE DSP_Read();
  131. void DSP_Write(BYTE output);
  132. WORD DSP_Get_Version();
  133.  
  134. void SetRate(DWORD rate);
  135. void SetHighRate(DWORD rate);
  136. int Play(char *data,playmode mode,DWORD length);
  137. int PlayXMS(DWORD data,playmode mode,DWORD length);
  138. int Sample(char *data,playmode mode,DWORD length);
  139.  
  140. int VocPlay(char far *data);
  141. void VocStop();
  142. static void VocHandle();
  143.  
  144. int SB_Setup();
  145. void SB_SetVect(vect which);
  146. void SB_RemoveVect();
  147.  
  148. int get_sb_env();
  149. int CardCheck();
  150. cardtype WhichCard();
  151.  
  152. #endif
  153.  
  154.